package com.kmproject.haifu.mvp.contract;

import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
import com.kmproject.haifu.mvp.model.entity.ResultBean;
import com.kmproject.haifu.mvp.model.entity.beans.HousePayWayBean;
import com.kmproject.haifu.mvp.model.entity.beans.HouseRentListShowInfoBean;
import com.kmproject.haifu.mvp.model.entity.beans.MyStoryBean;
import com.kmproject.haifu.mvp.model.entity.beans.UserSfBean;
import com.kmproject.haifu.mvp.model.entity.beans.VerificationBean;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Url;


/**
 * ================================================
 * Description:
 * <p>
 * Created by MVPArmsTemplate on 06/26/2019 18:09
 * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
 * <a href="https://github.com/JessYanCoding">Follow me</a>
 * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
 * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
 * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
 * ================================================
 */
public interface HousePublishDuanZuPublishContract {
    //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
    interface View extends IView {
      void showSf(String code, String data);
        void showYj(String code, String data);
        void addHouseRentSuccess();
        void sendHouseVerifyCodeSuccess();
        void houseCheckIsCorrectCodeSuccess();

        void getUserShopSuccess(UserSfBean userSfBean);
        void getHouseArea(List<HousePayWayBean> housePayWayBeans);
        void getHousePayWayBeanSuccess(List<HousePayWayBean> housePayWayBeans);
         void querySelectStorySuccess(List<MyStoryBean.ResultBean> resultBeans);

        void viewHouseRentSuccess(HouseRentListShowInfoBean houseRentListShowInfoBean);

    }

    //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
    interface Model extends IModel {
        Observable<ResultBean<List<HousePayWayBean>>> getHousePayWayBean(String url, String value, String category);
//        Observable<ResultBean<List<HousePayWayBean>>> dictListNew(@Url String url, @FieldMap Map<String,String> params);

        Observable<ResultBean> addHouseRent(String houseName, String rentType, String houseArea, String lgt,
                                            String lat, String acreage, String floor, String totalFloor,
                                            double monthRent, double dayRent, double cashPledge, String landlord,
                                            String landlordGender, String landlordType, String landlordMobile, String detail,
                                            String roomCount, String drawingCount, String toiletCount, String isVerify,
                                            String rentRoom, String houseImage, String houseRentDetail);

        Observable<ResultBean<VerificationBean>> sendHouseVerifyCode(String phoneNum);

        //验证手机号码验证码
        Observable<ResultBean> houseCheckIsCorrectCode(String phoneNum, String identifyCode);

        //获取用户身份
        Observable<ResultBean<UserSfBean>> getUserShop();

        //获取区域
        Observable<ResultBean<List<HousePayWayBean>>> getAreaTree(String url, String value, String category);
        Observable<ResultBean<List<MyStoryBean.ResultBean>>> querySelectStory(Map<String, Object> maps);

        Observable<ResultBean<HouseRentListShowInfoBean>> viewHouseRent(String url);

    }
}
